//代码只是演示代码，表征系统逻辑而已

/**
 * 创建一个图像储存的接口，然后具体的某一类储存实现该类，比如有阿里云存储图像，私有云存储图像类，然后在应用代码中，只需要创建不同的对象，其他不用变
 */

public interface ImageStore{
    String upload(Image image, String bucketName);
    Image download(String url);
}


public AliyunImageStore implements ImageStore{
   public String upload(Image image, String bucketName){
       //创建文件存储路径, bucketName
       create_bucket_if_not_exist(bucketName);
       String accessToken = generateAccessToken();
       //上传图片至阿里云
       //返回图片在阿里云上的地址
   } 

   public Image download(String url){

   }
}

public PrivateImageStore implements ImageStore{
    //实现upload和download接口
}



//应用代码：如果想将阿里云存储方式更换成私有云，只需要修改创建不同的类对象就好了，利用了面向对象的多态思想
//后面可以使用工厂模式+反射更加好的方式实现
public class ImageProcessingJob{

    public void process(){
        Image image = ...;
        ImageStore imageStore = new PrivateImageStore(...);
        imageStore.upload(image, "name");
    }
}